// 数字千分位分隔
export const format = (num) => {
    // let num = n.toLocaleString();  // 直接用这个return num就好，后面的可以直接注释
    // 将num中的$,去掉，将n变成一个纯粹的数据格式字符串
    num = num.toString().replace(/\$|\,/g,'')
    // 如果num不是数字，则将num置0，并返回
    if ('' == num || isNaN(num)) {
        return '不是数字！'
    }
    // 如果num是负数，则获取她的符号
    var sign = num.indexOf('-') == 0 ? '-' : '';
    // 如果存在小数点，则获取数字的小数部分
    var cents = num.indexOf('.') > 0 ? num.substr(num.indexOf('.')) : '';
    cents = cents.length > 1 ? cents : '';
    // 获取数字的整数部分
    num = num.toString().replace(/\-|\,/g,'')   // 去除-
    num = num.indexOf('.') > 0 ? num.substring(0, (num.indexOf('.'))) : num;
    if ('' == cents) {
        // 如果没有小数点，整数部分不能以0开头
        if (num.length > 1 && '0' == num.substr(0, 1)) {
            return '数字开头不能为0！'
        }
    } else {
        // 如果有小数点，且整数的部分的长度大于1，则整数部分不能以0开头
        if (num.length > 1 && '0' == num.substr(0, 1)) {
            return '数字开头不能为0！'
        }
    }
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
        num = num.substring(0, num.length - (4*i+3)) + ',' + num.substring(num.length - (4*i+3));
    }
    return (sign + num + cents)
}

// 生成指定范围随机数
export const randomNum = (max, min) => Math.floor(Math.random() * (max - min + 1)) + min;

// 数组乱序
export const arrScrambling = (arr) => {
    for (let i = 0; i < arr.length; i++) {
      const randomIndex = Math.round(Math.random() * (arr.length - 1 - i)) + i;
      [arr[i], arr[randomIndex]] = [arr[randomIndex], arr[i]];
    }
    return arr;
}

// 数组扁平化    就是将[5, [2, 2], [6, 8]]转变成[5, 2, 2, 6, 8]
export const flatten = (arr) => {
  let result = [];

  for(let i = 0; i < arr.length; i++) {
    if(Array.isArray(arr[i])) {
      result = result.concat(flatten(arr[i]));
    } else {
      result.push(arr[i]);
    }
  }
  return result;
}

// 数组中获取随机数
export const sample = arr => arr[Math.floor(Math.random() * arr.length)];
